使用实例化器 (Instantiator) 节点

实例化器 (Instantiator) 可用于实例化器 (Instantiator) 节点选中的 3D 节点或 3D 节点树的外观。实例化器 (Instantiator) 节点包含一个对目标节点或节点树的引用。当 Kanzi 渲染实例化器 (Instantiator) 节点时,它会复制 实例化器 (Instantiator) 节点目标的对象外观。这意味着对目标节点进行的所有更改都会反映在实例化器 (Instantiator) 节点中。例如,您可以使用实例化器 (Instantiator) 节点创建一个反射。请参阅 教程:创建反射

每个实例化器 (Instantiator) 节点都具有独特的变换,因此您可以将一个以上的实例化器 (Instantiator) 节点作为同一个对象的目标。您无法重写实例化器 (Instantiator) 节点中的其他属性,因此所有实例都是相同的。但会对每个实例化器 (Instantiator) 节点单独进行渲染。例如,这样可以使光源对不同位置的实例化器 (Instantiator) 节点产生不同的影响。

要为节点创建真正独特的实例,请将节点转换为预设件,并使用预设件的实例。请参阅 使用预设件

请注意,实例化器 (Instantiator) 节点只会影响渲染。由于实例化器 (Instantiator) 节点的布局大小为 0,因此您无法在布局中使用它。实例化的节点将不具有交互性。

创建实例化器 (Instantiator) 节点

要创建实例化器 (Instantiator) 节点:

  1. 工程 (Project)按下 Alt 并右键点击要在其中创建实例化器 (Instantiator) 节点的那个节点,然后选择实例化器 (Instantiator)
    请注意,您只能在 3D 节点内创建 实例化器 (Instantiator) 节点。
  2. 属性 (Properties) 中,将实例化节点 (Instantiated Node) 属性设置为要使用 实例化器 (Instantiator) 节点复制的节点。
    Kanzi Studio 会实例化节点。
  3. (可选)属性 (Properties) 中添加并设置属性,以更改实例化节点。
    例如,设置渲染变换 (Render Transformation)环境颜色 (Ambient Color) 属性。

从节点创建实例化器 (Instantiator) 节点

要从节点创建实例化器 (Instantiator) 节点:

  1. 工程 (Project)按下 Alt 并右键点击要在实例化器 (Instantiator) 节点中显示的那个节点,然后选择实例化到实例化器 (Instantiate Into an Instantiator)
    Kanzi Studio 会创建一个实例化器 (Instantiator) 节点,并将其实例化节点 (Instantiated Node) 属性设置为所选的节点。
  2. (可选)属性 (Properties) 中添加并设置属性,以更改实例化节点。
    例如,设置渲染变换 (Render Transformation)环境颜色 (Ambient Color) 属性。

在 API 中使用 实例化器 (Instantiator) 节点

要使用实例化器节点创建反射。

//创建一个名为 Instantiator3D 的实例化器节点。
Instantiator3DSharedPtr instantiator = Instantiator3D::create(domain, "Instantiator3D");
//设置实例化器节点要反射的目标对象。
instantiator->setTarget(targetNode);
//设置实例化器节点的非均匀缩放,以便在
//整个 xz 平面镜像目标对象。请注意,这样会使所有三角形倒置,因此您
//必须禁用实例化器的背面剔除渲染。
instantiator->setRenderTransformation(SRTValue3D::createScale(Vector3(1.0f, -1.0f, 1.0f)));

有关详细信息,请参阅 API reference 中的 Instantiator3D 类。

实例化器 (Instantiator) 节点属性类型和消息

要查看 实例化器 (Instantiator) 可用属性类型和消息的列表,请参阅 Instantiator

另请参阅

教程:创建反射